During an offload, network processing is transferred from a host-based software implementation to an offload engine coupled to a host with a direct memory interface. After a successful offload, the functions related, for example, to processing incoming frames that were performed by the host are then performed by the offload engine, thereby typically freeing up host resources (e.g., host processor resources).
An offload can be created according to a number of methods. In a first method, the offload engine can handle the entire life of the protocol connection. Thus, all connections of the type supported by the offload have to be routed to and processed by the offload device. However, since offload engines tend to have relatively limited resources as compared with the host, offload engines tend to be limited in the number of connections that can be supported. In a second method, the offload engine can offload a connection after it has been established. The second method can be the more flexible method.
During any offload process of an active packet-based network protocol, a period of time exists, for example, between the time in which the host protocol processing indicates an offload event to the offload engine and the time the offload engine continues processing on a connection. During the period of time, one or more packets may still reside in the non-offload stack. Such remaining packets are trapped and cannot be further processed by the host since the connection and the corresponding state information have been offloaded to the offload engine.
A conventional method for dealing with the trapped frames is to drop them and to request retransmission. However, such a method can be time and resource intensive and can severely penalize a connection for a long period of time, especially if some of the first packets dropped are from a newly established connection.
Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of ordinary skill in the art through comparison of such systems with some aspects of the present invention as set forth in the remainder of the present application with reference to the drawings.